g_simple_action_set_state (action, state);
}
-static void
-change_titlebar_state (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- GtkWindow *window = user_data;
-
- gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window),
- g_variant_get_boolean (state));
-
- g_simple_action_set_state (action, state);
-}
-
static void
change_radio_state (GSimpleAction *action,
GVariant *state,
};
static GActionEntry win_entries[] = {
- { "titlebar", activate_toggle, NULL, "false", change_titlebar_state },
{ "shape", activate_radio, "s", "'oval'", change_radio_state },
{ "bold", activate_toggle, NULL, "false", NULL },
{ "about", activate_about, NULL, NULL, NULL },
guint focus_on_map : 1;
guint fullscreen_initially : 1;
guint has_user_ref_count : 1;
- guint hide_titlebar_when_maximized : 1;
guint iconify_initially : 1; /* gtk_window_iconify() called before realization */
guint is_active : 1;
guint maximize_initially : 1;
case PROP_DESTROY_WITH_PARENT:
gtk_window_set_destroy_with_parent (window, g_value_get_boolean (value));
break;
- case PROP_HIDE_TITLEBAR_WHEN_MAXIMIZED:
- gtk_window_set_hide_titlebar_when_maximized (window, g_value_get_boolean (value));
- break;
case PROP_ICON:
gtk_window_set_icon (window,
g_value_get_object (value));
case PROP_DESTROY_WITH_PARENT:
g_value_set_boolean (value, priv->destroy_with_parent);
break;
- case PROP_HIDE_TITLEBAR_WHEN_MAXIMIZED:
- g_value_set_boolean (value, priv->hide_titlebar_when_maximized);
- break;
case PROP_ICON:
g_value_set_object (value, gtk_window_get_icon (window));
break;
return window->priv->destroy_with_parent;
}
-static void
-gtk_window_apply_hide_titlebar_when_maximized (GtkWindow *window)
-{
-#ifdef GDK_WINDOWING_X11
- GdkWindow *gdk_window;
- gboolean setting;
-
- setting = window->priv->hide_titlebar_when_maximized;
- gdk_window = _gtk_widget_get_window (GTK_WIDGET (window));
-
- if (GDK_IS_X11_WINDOW (gdk_window))
- gdk_x11_window_set_hide_titlebar_when_maximized (gdk_window, setting);
-#endif
-}
-
-/**
- * gtk_window_set_hide_titlebar_when_maximized:
- * @window: a #GtkWindow
- * @setting: whether to hide the titlebar when @window is maximized
- *
- * If @setting is %TRUE, then @window will request that it’s titlebar
- * should be hidden when maximized.
- * This is useful for windows that don’t convey any information other
- * than the application name in the titlebar, to put the available
- * screen space to better use. If the underlying window system does not
- * support the request, the setting will not have any effect.
- *
- * Note that custom titlebars set with gtk_window_set_titlebar() are
- * not affected by this. The application is in full control of their
- * content and visibility anyway.
- *
- * Since: 3.4
- **/
-void
-gtk_window_set_hide_titlebar_when_maximized (GtkWindow *window,
- gboolean setting)
-{
- g_return_if_fail (GTK_IS_WINDOW (window));
-
- if (window->priv->hide_titlebar_when_maximized == setting)
- return;
-
- window->priv->hide_titlebar_when_maximized = setting;
- gtk_window_apply_hide_titlebar_when_maximized (window);
-
- g_object_notify_by_pspec (G_OBJECT (window), window_props[PROP_HIDE_TITLEBAR_WHEN_MAXIMIZED]);
-}
-
-/**
- * gtk_window_get_hide_titlebar_when_maximized:
- * @window: a #GtkWindow
- *
- * Returns whether the window has requested to have its titlebar hidden
- * when maximized. See gtk_window_set_hide_titlebar_when_maximized ().
- *
- * Returns: %TRUE if the window has requested to have its titlebar
- * hidden when maximized
- *
- * Since: 3.4
- **/
-gboolean
-gtk_window_get_hide_titlebar_when_maximized (GtkWindow *window)
-{
- g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
-
- return window->priv->hide_titlebar_when_maximized;
-}
-
static GtkWindowGeometryInfo*
gtk_window_get_geometry_info (GtkWindow *window,
gboolean create)
if (priv->title_box == NULL)
return FALSE;
- visible = !priv->fullscreen &&
- !(priv->titlebar == priv->title_box &&
- priv->maximized &&
- priv->hide_titlebar_when_maximized);
+ visible = !priv->fullscreen;
+
gtk_widget_set_child_visible (priv->title_box, visible);
return visible;
gdk_window_set_keep_below (gdk_window, priv->below_initially);
if (priv->type == GTK_WINDOW_TOPLEVEL)
- {
- gtk_window_set_theme_variant (window);
- gtk_window_apply_hide_titlebar_when_maximized (window);
- }
+ gtk_window_set_theme_variant (window);
/* No longer use the default settings */
priv->need_default_size = FALSE;
return FALSE;
}
-static void
-test_hide_titlebar_when_maximized (void)
-{
- GtkWidget *window;
-
- g_test_bug ("740287");
-
- /* test that hide-titlebar-when-maximized gets set appropriately
- * on the window, if it's set before the window is realized.
- */
-
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
- g_signal_connect (window,
- "map-event",
- G_CALLBACK (on_map_event),
- NULL);
-
- gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window), TRUE);
-
- gtk_widget_show (window);
-
- g_timeout_add (100, stop_main, NULL);
- gtk_main ();
-
-#ifdef GDK_WINDOWING_X11
- if (GDK_IS_X11_SCREEN (gtk_widget_get_screen (window)))
- {
- Atom type;
- gint format;
- gulong nitems;
- gulong bytes_after;
- gulong *hide = NULL;
-
- XGetWindowProperty (gdk_x11_get_default_xdisplay (),
- GDK_WINDOW_XID (gtk_widget_get_window (window)),
- gdk_x11_get_xatom_by_name ("_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED"),
- 0,
- G_MAXLONG,
- False,
- XA_CARDINAL,
- &type,
- &format,
- &nitems,
- &bytes_after,
- (guchar **) &hide);
-
- g_assert_cmpint (type, !=, None);
- g_assert_cmpint (type, ==, XA_CARDINAL);
- g_assert_cmpint (format, ==, 32);
- g_assert_cmpint (nitems, ==, 1);
- g_assert_cmpint (hide[0], ==, 1);
-
- XFree (hide);
- }
-#endif
-
- gtk_widget_destroy (window);
-}
-
int
main (int argc, char *argv[])
{
g_test_add_func ("/window/show-hide", test_show_hide);
g_test_add_func ("/window/show-hide2", test_show_hide2);
g_test_add_func ("/window/show-hide3", test_show_hide3);
- g_test_add_func ("/window/hide-titlebar-when-maximized", test_hide_titlebar_when_maximized);
return g_test_run ();
}